home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1995 November / EnigmA AMIGA RUN 02 (1995)(G.R. Edizioni)(IT)[!][issue 1995-11][Skylink CD].iso / earcd / util / text / megaed12.lha / MegaEdV1_2 / Trans / MCPP_Linker.trans.c < prev    next >
C/C++ Source or Header  |  1995-02-18  |  2KB  |  99 lines

  1. /*
  2. ** MCPP.trans: Konvertiert Maxon C Fehlerdateien für MegaEd
  3. ** von M-J, 100% PD
  4. */
  5.  
  6. #include <exec/memory.h>
  7. #include <dos/dos.h>
  8. #include <dos/dostags.h>
  9. #include <string.h>
  10.  
  11. void main(void)
  12. {
  13.  const char *file1="T:MegaEdMake-ErrFile";
  14.  const char *file2="T:MegaEdMake-Errors";
  15.  const char lc[]="Linker complete";
  16.  BPTR con;
  17.  BPTR fileh;
  18.  char *old=NULL,*new=NULL;
  19.  char *off, *off2, *dest, *warn, *last;
  20.  LONG len;
  21.  short i;
  22.  BOOL meldung=FALSE;
  23.                              //MCPP Datei lesen
  24.  if(!(fileh=Open(file1,MODE_OLDFILE))) return;
  25.  Seek(fileh,0,OFFSET_END);
  26.  len=Seek(fileh,0,OFFSET_BEGINNING);
  27.  if(len)
  28.  {
  29.   if(!(old=(char*)AllocVec(len+1,MEMF_PUBLIC)))
  30.    {Close(fileh); return;}
  31.   if(Read(fileh,old,len)!=len)
  32.    {FreeVec(old); Close(fileh); return;}
  33.  }
  34.  Close(fileh);
  35.  if(!len) return;
  36.  old[len]=0;
  37.                             // Konvertierung
  38.  if(!(new=(char*)AllocVec(len+1,MEMF_PUBLIC))) return;
  39.  
  40.  off=old;
  41.  dest=new;
  42.  for(i=0;i<2;i++)    // 2 Zeilen überlesen
  43.  {
  44.   if(!(off=strchr(off,10))) goto esc;
  45.   off++;
  46.  }
  47.  for(;;)
  48.  {
  49.   if(!(off2=strchr(off,10))) break;
  50.   *off2=0;
  51.             // Text
  52.   if(!(off2=strchr(off,10)))
  53.    off2=strchr(off,0);
  54.   *off2=0;
  55.   if(!strncmp(off,lc,strlen(lc)))
  56.   {
  57.    for(;*off;off++)
  58.     if(isdigit(*off)) break;
  59.    if(!*off) break;
  60.    *dest='S'; dest++;
  61.    strcpy(dest,off);
  62.    dest+=strlen(dest);
  63.    *dest=10;
  64.    last=dest+1;
  65.    meldung=TRUE;
  66.    break;
  67.   }
  68.  
  69.   off+=strlen(off)+1;
  70.   if(!(off2=strchr(off,10)))
  71.    off2=strchr(off,0);
  72.   *off2=0;
  73.  
  74.   meldung=TRUE;
  75.   strcpy(dest,off);
  76.   off+=strlen(off)+1;
  77.   dest+=strlen(dest);
  78.   *dest=10;
  79.   dest++;
  80.   last=dest;
  81.  
  82.   if(!*off) break;
  83.  }
  84.  esc:
  85.  if(meldung)
  86.  {
  87.   if(fileh=Open(file2,MODE_NEWFILE))
  88.   {
  89.    len=(LONG)last-(LONG)new;
  90.    Write(fileh,new,len);
  91.    Close(fileh);
  92.   }
  93.  }
  94.  else DeleteFile(file2);
  95.  if(old) FreeVec(old);
  96.  if(new) FreeVec(new);
  97. }
  98.  
  99.